shell : 遍历文本每一行 您所在的位置:网站首页 shell for循环文件 shell : 遍历文本每一行

shell : 遍历文本每一行

#shell : 遍历文本每一行| 来源: 网络整理| 查看: 265

【参考文章】:【Shell脚本】逐行处理文本文件 【参考文章】:Shell中的IFS解惑

1. read

这种方式处理时,如果在循环内操作全局变量,超过循环作用域后,对全局变量的操作就会失效。 比如把每一行文本添加到一个全局数组,在循环内数组添加的元素是正常的,在循环外数组的元素会恢复到循环之前的状态;

cat data.dat | while read line do echo "File:${line}" done

这种方式处理时,如果在循环过程中执行某些命令,如 fab 命令,执行完命令后会直接跳出循环

while read line do echo "File:${line}" done < data.dat 2. for var in file 2.1 IFS

这种方式处理时,var 取值由IFS(内部域分隔符)决定,默认为 space,tab,newline来拆解读入的变量。

#!/bin/bash IFS_old=$IFS #将原IFS值保存,以便用完后恢复 IFS=$’\n’ #更改IFS值为$’\n’ ,注意,以回车做为分隔符,IFS必须为:$’\n’ do something IFS=$IFS_old #恢复原IFS值 2.2 for var in file

这种方式遍历文本不会出现上述问题,推荐使用

for line in $(cat data.dat) do echo "File:${line}" done for line in `cat data.dat` do echo "File:${line}" done 3. awk

处理文本时的逻辑比较复杂时一般用上述方式,如果只是简单的截取打印,则可以使用 awk 命令 传送门:Linux awk



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有